package com.yungu.swift.system.marketing.dao;


import com.yungu.swift.base.mapper.IMapper;
import com.yungu.swift.system.marketing.model.dto.MarketingCouponDto;
import com.yungu.swift.system.marketing.model.dto.MarketingGiftDto;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 优惠券管理Mapper
 *
 * @author xiuyin.cui - Generate
 * @version 1.1.0-SNAPSHOT
 * @since 2019-04-25 13:50
 */
public interface MarketingCouponMapper extends IMapper<MarketingCouponDto> {
    /**
     * 分组函数会影响查询效率，所以另开一个查询
     *
     * @param params Map
     * @return List<MarketingCouponDto>
     */
    List<MarketingCouponDto> listExtend(Map<String, Object> params);

    /**
     * 生成优惠券编号
     *
     * @return String
     */
    String createNo();

    /**
     * 批量添加
     *
     * @param marketingCouponDtoList List<MarketingCouponDto>
     * @return int
     */
    int addBatch(List<MarketingCouponDto> marketingCouponDtoList);

    /**
     * 根据礼包id获取对应的优惠券信息
     *
     * @param giftUuid String
     * @return List<MarketingCouponDto>
     */
    List<MarketingCouponDto> listByGiftUuid(String giftUuid);

    /**
     * 根据礼包获取对应的有效优惠券
     *
     * @param marketingGiftDto MarketingGiftDto
     * @return List<MarketingCouponDto>
     */
    List<MarketingCouponDto> getActiveCouponsByGift(MarketingGiftDto marketingGiftDto);

    /**
     * 获取乘客邀请礼包优惠券总额
     *
     * @param list    List
     * @param getMode Integer
     * @return BigDecimal
     */
    BigDecimal getSumMoneyByTypes(@Param("list") List<Integer> list, @Param("getMode") Integer getMode);

    /**
     * 获取注册和司机邀请礼包优惠券总额
     *
     * @param params Map
     * @return BigDecimal
     */
    BigDecimal getSumMoney(Map<String, Object> params);

    /**
     * expiryCouponByGiftUuid
     *
     * @param giftUuid String
     * @return int
     */
    int expiryCouponByGiftUuid(@Param("giftUuid") String giftUuid);

    List<MarketingCouponDto> getActiveCouponsByMap(Map<String, Object> params);
}